import os
import sys
import platform

# 检测当前操作系统
IS_WINDOWS = platform.system().lower() == 'windows'

# 定义颜色代码
class ColorCodes:
    # ANSI颜色代码
    ANSI_RED = '\033[0;31m'
    ANSI_GREEN = '\033[0;32m'
    ANSI_YELLOW = '\033[0;33m'
    ANSI_BLUE = '\033[0;34m'
    ANSI_PURPLE = '\033[0;35m'
    ANSI_CYAN = '\033[0;36m'
    ANSI_BOLD = '\033[1m'
    ANSI_NC = '\033[0m'  # No Color
    
    # Windows CMD颜色代码 - 仅在需要时使用
    # 这些值将在Windows环境中通过colorama转换
    
    @staticmethod
    def get_color_codes():
        """根据操作系统返回适当的颜色代码"""
        if IS_WINDOWS:
            # 在Windows上，我们使用colorama库来处理颜色
            try:
                import colorama
                colorama.init()
                # 初始化colorama后，可以直接使用ANSI代码
                return {
                    'RED': ColorCodes.ANSI_RED,
                    'GREEN': ColorCodes.ANSI_GREEN,
                    'YELLOW': ColorCodes.ANSI_YELLOW,
                    'BLUE': ColorCodes.ANSI_BLUE,
                    'PURPLE': ColorCodes.ANSI_PURPLE,
                    'CYAN': ColorCodes.ANSI_CYAN,
                    'BOLD': ColorCodes.ANSI_BOLD,
                    'NC': ColorCodes.ANSI_NC
                }
            except ImportError:
                # 如果colorama不可用，则返回空字符串
                return {
                    'RED': '',
                    'GREEN': '',
                    'YELLOW': '',
                    'BLUE': '',
                    'PURPLE': '',
                    'CYAN': '',
                    'BOLD': '',
                    'NC': ''
                }
        else:
            # 在Unix/Linux/MacOS上直接使用ANSI代码
            return {
                'RED': ColorCodes.ANSI_RED,
                'GREEN': ColorCodes.ANSI_GREEN,
                'YELLOW': ColorCodes.ANSI_YELLOW,
                'BLUE': ColorCodes.ANSI_BLUE,
                'PURPLE': ColorCodes.ANSI_PURPLE,
                'CYAN': ColorCodes.ANSI_CYAN,
                'BOLD': ColorCodes.ANSI_BOLD,
                'NC': ColorCodes.ANSI_NC
            }

# 导出颜色代码
colors = ColorCodes.get_color_codes()
RED = colors['RED']
GREEN = colors['GREEN']
YELLOW = colors['YELLOW']
BLUE = colors['BLUE']
PURPLE = colors['PURPLE']
CYAN = colors['CYAN']
BOLD = colors['BOLD']
NC = colors['NC']

# 辅助函数，用于彩色打印
def colored_print(text, color):
    """使用指定颜色打印文本"""
    print(f"{color}{text}{NC}")

def red(text):
    """红色文本"""
    return f"{RED}{text}{NC}"

def green(text):
    """绿色文本"""
    return f"{GREEN}{text}{NC}"

def yellow(text):
    """黄色文本"""
    return f"{YELLOW}{text}{NC}"

def blue(text):
    """蓝色文本"""
    return f"{BLUE}{text}{NC}"

def purple(text):
    """紫色文本"""
    return f"{PURPLE}{text}{NC}"

def cyan(text):
    """青色文本"""
    return f"{CYAN}{text}{NC}"

def bold(text):
    """粗体文本"""
    return f"{BOLD}{text}{NC}"